package com.mdd.admin.controller.goods;

import com.mdd.admin.config.aop.Log;
import com.mdd.admin.service.category.IGoodsCategoryService;
import com.mdd.admin.validate.category.GoodsCategoryParam;
import com.mdd.admin.validate.category.GoodsCategoryStatus;
import com.mdd.admin.validate.common.PageParam;
import com.mdd.admin.vo.category.GoodsCategoryDetailVo;
import com.mdd.admin.vo.category.GoodsCategoryListVo;
import com.mdd.common.core.PageResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * 服务分类管理
 */
@Api(tags = "服务分类管理")
@RestController
@RequestMapping("api/category")
public class GoodsCategoryController {

    @Resource
    IGoodsCategoryService iGoodsCategoryService;

    /**
     * 服务分类列表
     *
     * @param params    搜索参数
     * @return Object
     */
    @ApiOperation(value = "服务分类管理 - 分页列表")
    @GetMapping("/list")
    public List<GoodsCategoryListVo> list(@RequestParam Map<String, String> params) {
        return iGoodsCategoryService.list(params);
    }

    /**
     * 获取一级父类服务分类
     *
     * @return Object
     */
    @ApiOperation(value = "服务分类管理 - 获取一级父类服务分类")
    @GetMapping("/commonList")
    public List<GoodsCategoryListVo> pid() {
        return iGoodsCategoryService.listPid();
    }

    /**
     * 修改服务的状态
     *
     * @return Object
     */
    @ApiOperation(value = "服务分类管理 - 修改服务的状态")
    @PostMapping("/status")
    public void updateStatus(@RequestBody GoodsCategoryStatus goodsCategoryStatus) {
        iGoodsCategoryService.updateStatus(goodsCategoryStatus.getId(), goodsCategoryStatus.getIsShow());
    }

    /**
     * 服务分类详情
     *
     * @param id 主键ID
     * @return Object
     */
    @ApiOperation(value = "服务分类管理 - 服务分类详情")
    @GetMapping("/detail")
    public GoodsCategoryDetailVo detail(@Validated @IDMust() @RequestParam("id") Long id) {
        return iGoodsCategoryService.detail(id);
    }

    /**
     * 服务分类新增
     *
     * @param goodsCategoryParam 参数
     * @return Object
     */
    @ApiOperation(value = "服务分类管理 - 服务分类新增")
    @Log(title = "服务分类新增")
    @PostMapping("/add")
    public void add(@Validated(value = GoodsCategoryParam.create.class) @RequestBody GoodsCategoryParam goodsCategoryParam) {
        iGoodsCategoryService.add(goodsCategoryParam);
    }

    /**
     * 服务分类编辑
     *
     * @param goodsCategoryParam 参数
     * @return Object
     */
    @ApiOperation(value = "服务分类管理 - 服务分类编辑")
    @Log(title = "服务分类编辑")
    @PostMapping("/edit")
    public void edit(@Validated(value = GoodsCategoryParam.update.class) @RequestBody GoodsCategoryParam goodsCategoryParam) {
        iGoodsCategoryService.edit(goodsCategoryParam);
    }

    /**
     * 服务分类删除
     *
     * @return Object
     */
    @ApiOperation(value = "服务分类管理 - 服务分类删除")
    @Log(title = "服务分类删除")
    @GetMapping("/del")
    public void del(@RequestParam("id") Long id) {
        iGoodsCategoryService.del(id);
    }

}
